package flare.animate
{
  import flash.events.Event;

  /**
   * Event fired when a <code>Transition</code>
   * starts, steps, ends, or is canceled.
   */
  public class TransitionEvent extends Event
  {
    /** A transition start event. */
    public static const START:String = "start";
    /** A transition step event. */
    public static const STEP:String = "step";
    /** A transition end event. */
    public static const END:String = "end";
    /** A transition cancel event. */
    public static const CANCEL:String = "cancel";

    private var _t:Transition;

    /** The transition this event corresponds to. */
    public function get transition():Transition
    {
      return _t;
    }

    /**
     * Creates a new TransitionEvent.
     * @param type the event type (START, STEP, or END)
     * @param t the transition this event corresponds to
     */
    public function TransitionEvent(type:String, t:Transition)
    {
      super(type);
      _t = t;
    }

    /** @inheritDoc */
    public override function clone():Event
    {
      return new TransitionEvent(type, _t);
    }
  } // end of class TransitionEvent
}